Page({
  data: {
    username: '',       // 对应实体类username
    password: '',       // 对应实体类password
    realName: '',       // 对应实体类realName（驼峰命名）
    age: '',            // 对应实体类age
    gender: 1,          // 1-男，2-女（对应实体类gender）
    isLoading: false,
    genderOptions: ['男', '女'],
    genderValues: [1, 2],
    formErrors: {
      username: '',
      password: '',
      realName: '',     // 真实姓名验证
      age: ''
    },
    bgVisible: true
  },

  onLoad() {
    setTimeout(() => {
      this.setData({ bgVisible: false });
    }, 2000);
  },

  onInputChange(e) {
    const { field } = e.currentTarget.dataset;
    this.setData({
      [field]: e.detail.value
    });
    this.validateField(field);
  },

  onGenderChange(e) {
    this.setData({ 
      gender: this.data.genderValues[e.detail.value] 
    });
  },

  validateField(field) {
    const value = this.data[field];
    const errors = { ...this.data.formErrors };

    switch(field) {
      case 'username':
        errors.username = value.trim() ? 
          (value.length < 4 ? '用户名至少4个字符' : '') : 
          '请输入用户名';
        break;
      case 'password':
        errors.password = value.trim() ? 
          (value.length < 6 ? '密码至少6个字符' : '') : 
          '请输入密码';
        break;
      case 'realName':  // 匹配实体类的realName
        errors.realName = value.trim() ? 
          (value.length < 2 ? '真实姓名至少2个字符' : '') : 
          '请输入真实姓名';
        break;
      case 'age':
        errors.age = value.trim() ? 
          (value < 1 || value > 120 ? '请输入合理年龄' : '') : 
          '请输入年龄';
        break;
    }

    this.setData({ formErrors: errors });
    return !errors[field];
  },

  validateForm() {
    const fields = ['username', 'password', 'realName', 'age'];
    let isValid = true;
    
    fields.forEach(field => {
      if (!this.validateField(field)) {
        isValid = false;
      }
    });

    return isValid;
  },

  register() {
    if (!this.validateForm()) {
      const firstError = Object.keys(this.data.formErrors).find(k => this.data.formErrors[k]);
      if (firstError) {
        wx.pageScrollTo({ selector: `#${firstError}`, duration: 300 });
      }
      return;
    }

    const { username, password, realName, age, gender } = this.data;

    this.setData({ isLoading: true });
    
    // 提交字段与实体类保持一致（驼峰命名realName）
    wx.request({
      url: 'http://localhost:8080/nurse/add',
      method: 'POST',
      data: {
        username: username.trim(),
        password: password.trim(),
        realName: realName.trim(),  // 匹配实体类的realName
        age: parseInt(age.trim()),
        gender: gender,
        status: 1  // 状态默认为在职
      },
      header: { 'content-type': 'application/x-www-form-urlencoded' },
      success: (res) => {
        this.setData({ isLoading: false });
        console.log('注册接口返回:', res.data); // 打印返回结果用于调试
        
        // 兼容常见成功状态码（200/201等），根据实际接口返回调整
        const successCodes = [200, 201, '200', '201', 'success'];
        if (successCodes.includes(res.data.code)) {
          wx.showToast({ 
            title: '注册成功，即将跳转', 
            icon: 'success',
            duration: 1500,
            mask: true // 防止用户误操作
          });
          // 使用redirectTo关闭当前页，避免返回注册页
          setTimeout(() => {
            wx.redirectTo({
              url: '/pages/login/login',
              fail: (err) => {
                // 跳转失败时给出明确提示
                console.error('跳转登录页失败:', err);
                wx.showModal({
                  title: '提示',
                  content: '注册成功，但跳转失败，请点击"立即登录"',
                  showCancel: false
                });
              }
            });
          }, 1500);
        } else {
          wx.showToast({ 
            title: res.data.msg || '注册失败，请重试', 
            icon: 'none',
            duration: 2000
          });
        }
      },
      fail: (err) => {
        this.setData({ isLoading: false });
        console.error('接口请求失败:', err);
        wx.showToast({ title: '网络错误，请检查连接', icon: 'none' });
      }
    });
  }
});